package cn.tedu.cqhotel.service;

import cn.tedu.cqhotel.pojo.dto.UserAddNewDTO;
import cn.tedu.cqhotel.pojo.dto.UserUpdateDTO;
import cn.tedu.cqhotel.pojo.vo.UserListItemVO;
import cn.tedu.cqhotel.pojo.vo.UserStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 用户信息业务接口
 * yuliang
 */
@Transactional
public interface IUserService {

    /**
     * 添加用户
     *
     * @param userAddNewDTO 用户信息
     */
    void addNew(UserAddNewDTO userAddNewDTO);

    /**
     * 根据用户管理id，删除用户信息
     *
     * @param id 尝试删除的用户管理的id
     */
    void deleteById(Long id);

    /**
     * 根据用户管理id，修改用户信息
     *
     * @param id             用户管理id
     * @param userUpdateDTO 新的用户信息
     */
    void updateById(Long id, UserUpdateDTO userUpdateDTO);


    /**
     * 根据id获取用户信息
     *
     * @param userId 用户id
     * @return 返回与id匹配的用户数据详情，如果没有匹配的数据，则返回null
     */
    UserStandardVO getStandardById(Long userId);

    /**
     * 根据name获取用户信息
     *
     * @param name 用户姓名
     * @return 返回与name匹配的用户数据详情，如果没有匹配的数据，则返回null
     */
    List<UserListItemVO> listByName(String name);

    /**
     * 查询用户信息列表
     *
     * @return 用户信息列表，如果没有匹配的用户信息，将返回长度为0的列表
     */
    List<UserListItemVO> list();
}
